package reuseplugin.actions.download;

import java.io.File;

import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;

import reuseplugin.Activator;
import reuseplugin.ClientInterface;
import reuseplugin.views.downloadListe.DownloadView;

import common.itemhandling.Eintrag;
import common.itemhandling.files.Datei;

/**
 * @author Julius Ollesch
 * 
 */
public class EintragDownloadToDefaultAction extends Action implements
		ClientInterface {
	private TableViewer viewer;
	private Eintrag eintrag;

	public EintragDownloadToDefaultAction(TableViewer v) {
		super();
		viewer = v;
	}

	@Override
	public void run() {

		ISelection selection = viewer.getSelection();
		eintrag = (Eintrag) ((IStructuredSelection) selection)
				.getFirstElement();
		if (eintrag != null) {
			if (!eintrag.isGesperrt()) {
				String pfad = new File(Activator.getDefault()
						.getPreferenceStore().getString(
								"downloadPathPreference") //$NON-NLS-1$
						+ File.separator
						+ eintrag.getDateien().lastElement().getName())
						.getAbsolutePath();
				if (pfad != null) {
					Datei datei = eintrag.getDateien().lastElement();
					if (datei.isAufServer()) {
						if (!c.download(eintrag, datei, pfad)) {
							MessageDialog
									.openError(
											Display.getCurrent()
													.getActiveShell(),
											Messages.EintragDownloadToDefaultAction_errorTitle,
											Messages.EintragDownloadToDefaultAction_fileCannotBeDownloaded);
						}
					} else {
						MessageDialog
								.openError(
										Display.getCurrent().getActiveShell(),
										Messages.EintragDownloadToDefaultAction_errorTitle,
										Messages.EintragDownloadToDefaultAction_fileHasNotBeenUploaded);
					}

				}
			} else {
				MessageDialog.openError(Display.getCurrent().getActiveShell(),
						Messages.EintragDownloadToDefaultAction_errorTitle,
						Messages.EintragDownloadToDefaultAction_itemIsLocked);
			}
		} else {
			MessageDialog.openError(Display.getCurrent().getActiveShell(),
					Messages.EintragDownloadToDefaultAction_errorTitle,
					Messages.EintragDownloadToDefaultAction_selectItem);
		}
		IWorkbenchWindow window = HandlerUtil
				.getActiveWorkbenchWindow(new ExecutionEvent());
		if (window != null) {
			if (window.getActivePage() != null) {
				DownloadView view = (DownloadView) window.getActivePage()
						.findView(DownloadView.ID);
				if (view != null) {
					view.setFocus();
				}
			}
		}

	}

}
